package org.persistente.esquema;

import java.lang.reflect.Field;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.persistente.banco.ConexaoException;


/**
 * Relação atributo-campo do tipo CHAR.
 */
public class CampoCharacter extends CampoAbstrato<Character> {

    public CampoCharacter(Field campo) {
        super(campo);
    }

    
   
    @Override
    public Character get(ResultSet rs) throws SQLException {
        String s = rs.getString(getNome());
        if (s == null) {
            return null;
        }
        if (s.length() != 1) {
            throw new ConexaoException("Mapeamento de carater inválido!");
        }
        return new Character(s.charAt(0));
    }

    @Override
    public void set(PreparedStatement ps, int ind, Character valor) throws SQLException {

        if (valor != null) {
            ps.setString(ind, valor.toString());
        } else {
            ps.setString(ind, null);
        }
    }


}
